Automatic media sharing via shutter click

ABSTRACT

A computer-implemented method for automatically sharing media between users is provided. A first image is received depicting a scene with one or more persons. Face detection information is identified for each person in the first image. Identification information for each face detected is obtained without user intervention. The face detection information and the identification information are associated with the first image. The first image including the associated face detection information and identification information is sent to a server hosting a media sharing service. An access link to an event group is received. The event group includes an album of the first image and a first collection of images that share a set of common features with the first image.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.13/590,354, filed Aug. 21, 2012, which claims the benefit of U.S.application Ser. No. 13/246,628, filed Sep. 27, 2011 (issued U.S. Pat.No. 8,194,940), which claims the benefit of U.S. application Ser. No.13/188,879, filed Jul. 22, 2011 (issued U.S. Pat. No. 8,270,684), whichclaims the benefit of U.S. Provisional Appl. No. 61/368,166, filed Jul.27, 2010, each of which is hereby incorporated by reference in itsentirety.

TECHNICAL FIELD

This disclosure relates generally to the field of digital media,including photos and video, and more particularly to the sharing ofdigital media between users.

BACKGROUND

Advancements in digital image capturing technology now allow users toquickly and conveniently capture digital media, including photos andvideo. In addition, innovations such as the integration of digitalcameras in mobile devices, inexpensive storage for digital media, andnetwork connectivity through the Internet allow users to capture digitalmedia from any location and share it with other users.

The sharing of digital media typically involves a user uploading mediato a media sharing web site such as, for example, Picasa and Picasa WebAlbums, using a browser or other application running on the user'scomputing device. The media is stored at a remote web server operated bythe web site and later accessed by other users, with whom the user haschosen to share the media. However, as the amount of digital media anddigital media collections grows, searching for particular images toshare with certain users becomes cumbersome.

BRIEF SUMMARY

Embodiments relate to a computer-implemented method for automaticallysharing media. In one embodiment, a first collection of images and asecond collection of images associated with a first user and a seconduser, respectively, are received. The first collection of imagescontains first content data and the second collection of images containssecond content data. In addition, the first and second users areassociated with each other. Next, the first and second collections areautomatically grouped, without user intervention, into an event groupaccording to the first and second content data. The first and secondusers are then automatically provided, without user intervention, accessto the event group. The event group may be automatically updated withone or more new images associated with at least one of the first andsecond users, and the first and second users may be automaticallyprovided access to the updated event group.

In another embodiment, a system for automatically sharing media includesat least one memory, a media input module, and a media sharing module.The media input module and the media sharing module are located in theat least one memory. The media input module is configured to receive afirst collection of images associated with a first user and a secondcollection of images associated with a second user, where the firstcollection contains first content data and the second collectioncontains second content data. In addition, the first and second usersare associated with each other. The media sharing module is configuredto automatically group, without user intervention, the first and secondcollections into an event group according to the first and secondcontent data. The media sharing module is further configured toautomatically provide, without user intervention, the first and secondusers access to the event group. The event group may be automaticallyupdated by the media sharing module with one or more new imagesassociated with at least one of the first and second users, and thefirst and second users may be automatically provided access to theupdated event group.

Embodiments may be implemented using hardware, firmware, software, or acombination thereof and may be implemented in one or more computersystems or other processing systems.

Further embodiments, features, and advantages, as well as the structureand operation of the various embodiments, are described in detail belowwith reference to the accompanying drawings. It is noted that thepresent disclosure is not limited to the specific embodiments describedherein. Such embodiments are presented herein for illustrative purposesonly. Additional embodiments will be apparent to persons skilled in therelevant art(s) based on the information contained herein.

BRIEF DESCRIPTION OF THE DRAWINGS/FIGURES

Embodiments are described, by way of example only, with reference to theaccompanying drawings. In the drawings, like reference numbers mayindicate identical or functionally similar elements. The drawing inwhich an element first appears is typically indicated by the leftmostdigit or digits in the corresponding reference number. Further, theaccompanying drawings, which are incorporated herein and form part ofthe specification, illustrate the embodiments of the present disclosureand, together with the description, further serve to explain theprinciples of the disclosure and to enable a person skilled in therelevant art(s) to make and use embodiments thereof.

FIG. 1 is a diagram of an exemplary system in which embodiments may beimplemented.

FIG. 2 is a diagram of an example of a client application in accordancewith an embodiment.

FIG. 3 is a diagram of an example of a system in which a media sharingservice may be implemented in accordance with an embodiment.

FIG. 4A is a flowchart of an example of a method for automaticallysharing media between users in accordance with an embodiment.

FIG. 4B is a flowchart of an example of a method for updating an eventgroup with one or more new images in accordance with an embodiment.

FIG. 5 is a flowchart of an example of a method for capturing andsending media using a client application in accordance with anembodiment.

FIG. 6 is a flowchart of an example of a method for grouping images intoalbums in accordance with an embodiment.

FIG. 7 is a flowchart of an example of a method for grouping albums intoevent groups in accordance with an embodiment.

FIG. 8 is a diagram of an example of a computer system in whichembodiments can be implemented.

DETAILED DESCRIPTION Table of Contents I. Overview II. System

A. Client Application

B. Media Sharing Service

-   -   1. Face Recognition    -   2. Landmark and Object/Scene Recognition    -   3. Metadata Extraction    -   4. Image Grouping        -   a. Album Segmentation        -   b. Event Clustering and Sharing        -   c. Real-time Event Sharing

III. Method

A. Automatic Media Sharing Between Users

B. Client Application

C. Album Segmentation

D. Event Clustering

IV. Example Computer System Implementation V. Conclusion I. OVERVIEW

To facilitate the searching and sharing of images, users can organizedigital media collections into different folders by album name or bydate. Users can also associate tags or tag words with an image or groupof images. Tags include one or more keywords that describe the contentof the image. However, organization schemes involving user-provided tagsdo not scale well for large image collections from diverse sources. Forexample, users may fail to consistently and/or accurately tag allavailable images, and there may be differences in tags provided bydifferent users for the same image. Furthermore, significant user inputis required to tag a large number of images and consequently, users areunlikely to tag all of the available images. To share a group of images,each user must manually organize, tag, and upload a group of images to amedia sharing web site. Moreover, this is particularly difficult formobile phone users for whom data entry is cumbersome or for users who donot have the time to organize and enter descriptive data for media theywish to share.

In addition, media sharing sites generally do not provide the capabilityto automatically group images from multiple users. For example, a usermay wish to share images taken at an event with other attendees of theevent. Similarly, other attendees may wish to share their images fromthe event with the user. Although two or more users may be able tocreate a collaborative album or image collection that contains imagesfrom multiple users, the creation and update of such an album or imagecollection is still a manual process for the users.

Embodiments relate to automatically sharing media between users.Embodiments automatically group, without user intervention, digitalmedia, including photos and video, associated with a user into one ormore albums based on the content of the media objects. Furthermore,embodiments automatically group, without user intervention, albums frommultiple users into one or more event groups based on the content of thealbums. The automatically generated event group(s) may then be sharedbetween multiple users depending on the users' associations with eachother and their individual sharing preferences. Embodiments also enablethe event group(s) to be updated with new images and automatically sharethe update event group(s) between the users.

For example, a first user and a second user may belong to a socialnetwork in which each user allows the other access to each other'sdigital media collection, including photos and videos. The first andsecond users may capture photos from a particular event they bothattend. Each user may store event photos along with other unrelatedphotos. Embodiments automatically determine the content of the photosassociated with each user, group the photos corresponding to the eventinto an event group, and share the event group, including any new eventphotos, between the users. Embodiments may use a number of differenttechniques including, but not limited to, face recognition, landmarkrecognition, and scene or object recognition to determine the content ofmedia. Embodiments may also extract metadata from media to determine itscontent.

While the present disclosure is described herein with reference toillustrative embodiments for particular applications, it should beunderstood that embodiments are not limited thereto. Other embodimentsare possible, and modifications can be made to the embodiments withinthe spirit and scope of the teachings herein and additional fields inwhich the embodiments would be of significant utility. Further, when aparticular feature, structure, or characteristic is described inconnection with an embodiment, it is submitted that it is within theknowledge of one skilled in the relevant art to effect such feature,structure, or characteristic in connection with other embodimentswhether or not explicitly described.

It would also be apparent to one of skill in the relevant art that theembodiments, as described herein, can be implemented in many differentembodiments of software, hardware, firmware, and/or the entitiesillustrated in the figures. Any actual software code with thespecialized control of hardware to implement embodiments is not limitingof the detailed description. Thus, the operational behavior ofembodiments will be described with the understanding that modificationsand variations of the embodiments are possible, given the level ofdetail presented herein.

In the detailed description herein, references to “one embodiment,” “anembodiment,” “an example embodiment,” etc., indicate that the embodimentdescribed may include a particular feature, structure, orcharacteristic, but every embodiment may not necessarily include theparticular feature, structure, or characteristic. Moreover, such phrasesare not necessarily referring to the same embodiment. Further, when aparticular feature, structure, or characteristic is described inconnection with an embodiment, it is submitted that it is within theknowledge of one skilled in the art to affect such feature, structure,or characteristic in connection with other embodiments whether or notexplicitly described.

The terms “media” and “digital media” are used interchangeably herein torefer broadly and inclusively to digital photographs, or digital photos,and digital video. The term “image” is used herein to refer broadly andinclusively to a digital photograph depicting an image of a scene anditems within that scene, including, but not limited to, one or morepersons, one or more landmarks, and/or one or more objects. In addition,the term “image(s)” may refer to one or more frames from at least aportion of a digital video. Furthermore, the terms “photograph/photo,”“video,” “media,” and “image” are used herein to refer to digital photosand digital video whether or not the terms are modified by the term“digital.”

The term “media sharing site” is used herein to refer broadly andinclusively to any web site, service, framework, or protocol adapted toshare digital media, including photos and videos, between various users.Such a web site or service may also include social networking sites withthe added capability to share media between members of the site.

The terms “image capture device” and “image capturing device” are usedinterchangeably herein to refer broadly and inclusively to any deviceadapted to capture digital media, including photos and videos. Examplesof such devices include, but are not limited to, digital cameras, mobiledevices with an integrated digital camera. Furthermore, it is assumedherein that images are captured using such a device by manuallypressing, selecting, or clicking a button or key that opens a shutterdevice for image exposure purposes. However, it should be noted the term“shutter” is used herein to also refer broadly and inclusively to anytype of button or key on the image capture device that is used tocapture the image (i.e., by invoking the shutter device).

II. SYSTEM

FIG. 1 is a diagram illustrating a system 100 in which embodimentsdescribed herein can be implemented. System 100 includes client devices110 and 110A-C, a client application 112, device input 114, local memory116, a browser 115, a media viewer 118, media 120, notifications 130, anetwork 140, servers 150, 160, and 170, a media sharing service 152, anda database 180.

Client devices 110, 110A, 110B, and 110C communicate with one or moreservers 150, 160, and 170, for example, across network 140. Althoughonly servers 150, 160, and 170 (hereinafter collectively referred to as“server(s) 150”) are shown, more servers may be used as necessary.Similarly, although only client devices 110 and 110A-C are shown, moreclient devices may be used as necessary. Client device 110 iscommunicatively coupled to network 140 through a communicationsinterface. Client device 110 can be any type of computing device havingone or more processors and a communications infrastructure capable ofreceiving and transmitting data over a network. Client device 110 alsoincludes device input 114. Device input 114 may be any kind of userinput device coupled to client device 110 including, but not limited to,a mouse, QWERTY keyboard, touch-screen, microphone, or a T9 keyboard.Client device 110 can include, but is not limited to, a mobile phone, apersonal digital assistant (PDA), a computer, a cluster of computers, aset-top box, or other similar type of device capable of processinginstructions and receiving and transmitting data to and from humans andother computing devices.

Server(s) 150 similarly, can be any type of computing device capable ofserving data to client device 110. Server(s) 150 execute media sharingservice 152. Although media sharing service 152 is shown with respect toserver 150, media sharing service 152 may be implemented on any server.Furthermore, the functionality of media sharing service 152 may beimplemented on a single server, such as, for example, server 150, oracross multiple servers, such as, for example, servers 150, 160, and170, in a distributed or clustered server environment.

In an embodiment, server(s) 150 are communicatively coupled to database180. Database 180 may be any type of data storage known to those ofskill in the art. In an example, the data storage may be a databasemanagement system, such as an ORACLE database or other databases knownto those skilled in the art. Database 180 may store any type of mediaand any corresponding media data accessible by server(s) 150. Althoughonly database 180 is shown, more databases may be used as necessary.

In an embodiment, local memory 116 is used to store informationaccessible by client device 110. For example, information stored inlocal memory 116 may include, but is not limited to, one or more digitalmedia files, contact information for one or more users, or any othertype of information in a digital format. Local memory 116 may be anytype of recording medium coupled to an integrated circuit that controlsaccess to the recording medium. The recording medium can be, for exampleand without limitation, a semiconductor memory, a hard disk, or othersimilar type of memory or storage device. Moreover, local memory 116 maybe integrated within client device 110 or may be a stand-alone devicecommunicatively coupled to client device 110 via a direct connection.For example, local memory 116 may include an internal memory device ofclient device 110, a compact flash card, a secure digital (SD) flashmemory card, or other similar type of memory device.

Network 140 can be any network or combination of networks that can carrydata communication. Such network 140 can include, but is not limited to,a wired (e.g., Ethernet) or a wireless (e.g., Wi-Fi and 3G) network. Inaddition, network 140 can include, but is not limited to, a local areanetwork, medium area network, and/or wide area network such as theInternet. Network 140 can support protocols and technology including,but not limited to, Internet or World Wide Web protocols and/orservices. Intermediate network routers, gateways, or servers may beprovided between components of system 100 depending upon a particularapplication or environment.

In an embodiment, client devices 110 and 110A-C execute clientapplication 112. In a further embodiment, client devices 110 and 110A-Cexecute media viewer 118. The operation of client application 112 andmedia viewer 118 are described in further detail below. Clientapplication 112 and media viewer 118 may be implemented on any type ofcomputing device. Such computing device can include, but is not limitedto, a personal computer, mobile device such as a mobile phone,workstation, embedded system, game console, television, set-top box, orany other computing device. Further, a computing device can include, butis not limited to, a device having a processor and memory for executingand storing instructions. Software may include one or more applicationsand an operating system. Hardware can include, but is not limited to, aprocessor, memory and graphical user interface display. The computingdevice may also have multiple processors and multiple shared or separatememory components. For example, the computing device may be a clusteredcomputing environment or server farm.

In an embodiment, as illustrated in FIG. 1, client device 110, viaclient application 112, media viewer 118, or any combination thereof,may send or receive media data 120 to or from media sharing service 152on server(s) 150. Media data 120 includes one or more media files. Themedia files may be photos, video, or a combination of both. In addition,the media files may include media content information and metadatacorresponding to the media to be sent or retrieved. Client application112 and media viewer 118 may present a visual representation of theretrieved media on a display of client device 110. Such a display can beany type of display for viewing digital photos and/or video or can beany type of rendering device adapted to view digital photos and/orvideo.

In an embodiment, media viewer 118 can be a standalone application, orit can be executed within a browser 115, such as, for example, GoogleChrome or Microsoft Internet Explorer. Media viewer 118, for example,can be executed as a script within browser 115, as a plug-in withinbrowser 115, or as a program, which executes within a browser plug-in,such as, for example, the Adobe (Macromedia) Flash plug-in. In anembodiment, client application 112 and/or media viewer 118 areintegrated with media sharing service 152.

In an embodiment, client device 110 is also configured to receivenotifications 130 from media sharing service 152 over network 140. In anembodiment, notifications 130 include an access link to a location onthe web where the media to be shared is stored. For example, the accesslink may include a location to a web site in the form of a web locationaddress such as a uniform resource locator (URL). Notifications 130 maybe sent from media sharing service 152 to client device 110 using any ofa number of different protocols and methods. For example, notifications130 may be sent from media sharing service 152 via electronic mail orShort Message Service (SMS). Notifications 130 may be received at clientdevice 110 by client application 112, media viewer 118, or any otherapplication or utility adapted to receive such notifications, such as,for example, an electronic mail client or SMS application.

A. Client Application

FIG. 2 is a diagram illustrating an exemplary embodiment of clientapplication 112 of client device 110 of FIG. 1. Client application 112includes image capture module 210, face detection module 220, metadatainsertion module 230, user interface module 240, and image transfermodule 250. Each of the components of client application 112, includingimage capture module 210, face detection module 220, metadata insertionmodule 230, user interface module 240, and image transfer module 250,may be communicatively coupled to one another.

In operation, client application 112 uses user interface module 240 todisplay an option to a user at client device 110 to capture a digitalimage. Upon the user's selection of the option, client application 112uses image capture module 210 to capture the digital photo or video. Tocapture the image, image capture module 210 can be coupled to an imagecapture device (not shown), such as, for example, a digital cameraintegrated with client device 110. In addition, user interface module240 can be coupled to a user input device, such as, for example, a touchscreen or input button at client device 110 (e.g., device input 114).Once the photo or video is captured, it can be stored by image capturemodule 210 at client device 110, for example, in local memory 116.

Face detection module 220 can be configured to analyze media after it iscaptured by image capture module 210. In an embodiment, face detectionmodule 220 can also analyze media previously captured and stored atclient device 110. Such stored media may have been captured using theimage capturing device at 110 (e.g., by image capture module 210 oranother application executed at client device 110) or may have beencaptured using a separate image capturing device not coupled to clientdevice 110 and later transferred to local memory 116. Face detectionmodule 220 can be configured to analyze one or more images, or imagesspecified by a user, to detect faces within the image(s). For example,if a user transfers an album of digital photos to local memory 116, facedetection module 220 can analyze each digital photo in that album todetect faces.

When a face is detected, face detection module 220 can make a digitalcopy of an area encompassing the detected face, for example, arectangular area encompassing the detected face, to produce a facialimage or facial model corresponding to the detected face. The facialimage can then be stored in local memory 116. Alternatively, the facialimage can be stored in a facial image database (not shown), which isaccessible by client application 112 via a network (e.g., network 140).In an embodiment, face detection module 220 can use stored facial imagesto aid in detecting faces in subsequently analyzed images.

A person skilled in the relevant art given this description wouldappreciate that any one of several well-known techniques may be used inface detection module 220 to detect faces in images. Examples of suchtechniques include, but are not limited to, elastic bunch graph matchingas described in U.S. Pat. No. 6,222,939, using neural networks on “gaborjets” as described in U.S. Pat. No. 6,917,703, and face detection usingboosted primitive features as described in U.S. Pat. No. 7,099,510.

In some cases, the automatic face detection of face detection module 220may not detect all faces in an image. Therefore, in some embodiments,the user may trigger face detection module 220 specifically to process aspecified image. For example, face detection module 220 may not detectone or more faces in an image. In this case, in an embodiment, facedetection module 220 provides the capability for the user to manuallyassist the face detection process. For example, user interface module210 may present a graphical user interface to draw a bounding area, or abounding box, around each face that the user wants detected. One skilledin the relevant art given this description would understand that thesame facial detection technique may be used in the automatic facedetection as well as the manually-assisted face detection with slightmodifications. For example, when manually assisted, the face detectionsoftware may simply attach a greater weight to facial landmark featuresidentified within the defined area.

In an embodiment, once the faces are detected using face detectionmodule 220, user interface module 240 may display one or more user inputfields, which the user can use to provide additional descriptive data toidentify the person corresponding to the detected face. For example, theuser can provide a name with which to tag the detected facial image. Thetag can later be used to identify the person in other images. Thedescriptive data may also include, but is not limited to, contactinformation for the identified person. Upon user entry of additionalinformation corresponding to the detected facial image(s), metadatainsertion module 230 can be configured to associate or annotate theimage with the detected face information (e.g., facial images producedby face detection module 220) in addition to any user-providedinformation including, but not limited to, tag name(s) for theidentified person(s), contact information for each identified person(s),and/or image caption or description information.

In an embodiment, face detection module 220 may use stored facial imagesto identify the detected face(s). As described above, the facial imagesmay be stored in local memory 116 or in a facial database accessible byclient application 112 over network 140. Such a facial database can beany kind of database adapted to store facial images in addition tometadata, including name and/or contact information of the personcorresponding to each facial image. The stored facial image can alsoinclude metadata of its own, including identification information forthe identity of the person corresponding to the facial image. Forexample, the identification information may include a name and contactinformation.

Thus, in this embodiment, the user would no longer be required toprovide identification information for the detected face. The advantageof this embodiment is that metadata insertion module 230 can associatedetected face information and the corresponding identificationinformation without further user intervention. However, face detectionmodule 220 may need to be configured with additional face recognitionfunctionality in order to match the detected faces with stored facialimages or facial models. Such face recognition functionality wouldoperate similarly to that of face recognition module 332 of mediasharing service 152 of FIG. 3, described below.

In an embodiment, metadata insertion module 230 may also associate withthe image(s) other metadata including, but not limited to, a time whenthe image(s) was taken and a location where the image(s) was taken. Forexample, client device 110 may include a global positioning satellite(GPS) receiver and metadata insertion module 230 may be configured toassociate with the image(s) a location where the image(s) was taken inaddition to any other information. A person skilled in the relevant artgiven this description would recognize that any number of well-knowninformation formats might be used for the metadata. For example, thelocation of an image may include latitude and longitude coordinatescorresponding to a geographic location where the image was captured.

In an embodiment, image transfer module 250 transfers one or more imagesfrom client device 110 to media sharing service 152 of server(s) 150,shown in FIG. 1, over network 140. The transferred image(s) includesmetadata information associated with the image(s) by metadata insertionmodule 230. Image transfer module 250 is configured to transfer theimage(s) via a communications interface of client device 110. Theimage(s) may be transferred by image transfer module 250 using anynumber of well-known methods for transferring digital files betweenclient device 110 and media sharing service 152 over network 140.

Embodiments of image capture module 210, face detection module 220,metadata insertion module 230, user interface module 240, and imagetransfer module 250 can be implemented in software, firmware, hardware,or any combination thereof. Embodiments of image capture module 210,face detection module 220, metadata insertion module 230, user interfacemodule 240, and image transfer module 250, or portions thereof, can alsobe implemented as computer-readable code executed on one or morecomputing devices capable of carrying out the functionality describedherein. Examples of such computing devices include, but are not limitedto, a computer, workstation, embedded system, networked device, mobiledevice, or other type of processor or computer system capable ofcarrying out the functionality described herein.

In addition, image capture module 210, face detection module 220,metadata insertion module 230, user interface module 240, and imagetransfer module 250 shown to be within client application 112, representfunctionality in implementing embodiments of the present disclosure. Oneskilled in the art will understand that, more or fewer modules thanshown in client application 112 may be implemented in software toachieve the functionality of the present disclosure.

B. Media Sharing Service

FIG. 3 is a diagram illustrating an embodiment of an exemplary system300 in which media sharing service 152 may be implemented. System 300includes a client device 310, a media database 320, media sharingservice 152 of FIG. 1, an album database 350, an event database 360, anda social graph database 370. Media sharing service 152 includes variouscomponent modules including a media input module 330 and a media sharingmodule 340. Media input module 330 includes a face recognition module332, a landmark recognition module 334, an object recognition module336, and a metadata extractor module 338.

Media database 320 may store any type of media data such as photographor video data. The images may, for example, be photographs taken from adigital camera. The images may be encoded in JPEG, TIFF, or othersimilar format for digital image files. Each image may have metadataassociated with the image. For example, an image may have anexchangeable image file format (EXIF) header that stores informationsuch as a time when the photograph of the image was taken, a locationwhere the photo was taken, and information about the image capturingdevice, such as, for example, a digital camera, that captured the image,such as make, model, focal length and zoom. The time the image was takenmay correspond to the time in which the image was exposed by the imagecapturing device. A video includes a sequence of frames, and each frameincludes an image. The video may also be captured using an imagecapturing device able to capture video, such as, for example, a digitalcamera.

In an example, media database 320 may be coupled to a media sharing site(not shown), such as Picasa. A user may upload the media from the mediasharing site to media database 320. For example, referring back to FIG.1, the user may use browser 115 at client device 110 to navigate to themedia sharing site and upload images to media database 320 via a userinterface provided by the media sharing site. In a further example, theuser may also be able to retrieve images from media database 320. Forexample, the user may have a choice to either download images ontoclient 110 for storage in local memory 116 or view the images usingmedia viewer 118, which may also be coupled to the media sharing site.

Media data 301 is retrieved from media database 320 by media inputmodule 330. Media input module 330 may retrieve media data 301 frommedia database 320 using, for example, an SQL select statement.Alternatively, media input module 330 could access media database 320using a web service. Media database 320 may have one or moreintermediate servers that may push media data 301 to media input module330. Like media data 120, described above, media data 301 may includeone or more image files. The image files may be photographs, frames fromone or more videos, or a combination of both. The image files mayinclude image content and metadata, such as, for example, metadatainformation added by metadata insertion module 230 of client application112, illustrated in FIG. 2.

Media input module 330 may also receive media data 120 over network 140from one or more of client device 110 via communication channel 302,client device 110A via communication channel 304, and/or client device310 via communication channel 303. Although only client device 110,client device 110A, and client device 310 are shown, additional clientdevices may be used as necessary. Client device 310 may include anyimage capturing device with the capability to send captured images toserver(s) 150, including media sharing service 152, over network 140.For example, client device 310 may be a standalone digital cameraincluding, but not limited to, digital camera with an EYE-FI SD card,which provides the capability to store images and directly upload storedimages to a media sharing site.

Upon receiving media data 120 and/or retrieving media data 301, mediainput module 330 sends media data 120 and/or media data 301 to facerecognition module 332, landmark recognition module 334, objectrecognition module 336, and metadata extractor module 338.

1. Face Recognition

Face recognition module 332 interprets the content of media data 120and/or media data 301 (hereinafter collectively referred to as “mediadata 120/301”) by performing automatic face recognition to recognize oneor more faces. The automatic face recognition of face recognition module332 may function in two stages: a face detection stage and a facerecognition stage. However, face recognition module 332 may be able toskip the face detection stage for media data 120/301 if face detectioninformation is already included with media data 120/301. For example,the image may have been sent by client application 112 of client device110, which already performs face detection and includes the facedetection information with the image file. Since not all images includeface detection information, face recognition module 332 must determinewhether an image file it receives includes such information and based onthe determination, perform face detection as necessary.

The face detection stage of face recognition module 332 includesautomatically detecting faces in images of media data 120/301. Suchautomatic detection may be based on, for example, general facialcharacteristics. Face recognition module 332 analyzes the images todetect faces within the images. When one or more faces are detected,face recognition module 332 may generate face detection informationcorresponding to each detected face including, for example, a boundedregion encompassing the detected face within the image. In anembodiment, face recognition module 332 may enable a user to manuallyassist face detection, for example, through client application 112and/or media viewer 118. In such an embodiment, the operation of theface detection stage is similar to the manual or user assisted operationof face detection module 220 of FIG. 2, described above.

The face recognition stage of face recognition module 332 includesidentifying the detected faces. The operation of face recognition module332 may include making comparisons of detected faces against one or moreof facial images that have been previously recognized. For example, thepreviously recognized faces may be stored in one or more facial imagedatabases (not shown) accessible by face recognition module 332. Aperson skilled in the relevant art given this description wouldappreciate that any one of several methods for face detection andrecognition may be used. One example of such a method is described inLui and Chen, “Video-based Face Recognition Using Adaptive Hidden MarkovModels”, 2001, CVPR.

2. Landmark and Object/Scene Recognition

Landmark recognition module 334 detects portions of images of media data120/301 that have a landmark and identifies the landmark. One example oflandmark recognition module 334 is described in commonly owned U.S.patent application Ser. No. 12/119,359 entitled “Automatic Discovery ofPopular Landmarks,” incorporated by reference herein in its entirety.Landmark recognition module 334 may, for example, use visual clusteringto recognize landmarks.

Object recognition module 336 interprets images of media data 120/301 torecognize objects within a scene represented by the images. For example,media data 120/301 may include an image of a scene, and objectrecognition module 336 may recognize an object in that image. In anotherexample, object recognition module 336 may recognize an object in one ormore frames of a video. Object recognition module 336 may be any type ofobject recognition module as known to those skilled in the art. Ingeneral, the operation of object recognition module 336, like facerecognition module 332, may include two steps. First, a portion of animage including an object is detected. Second, the portion of the imageis put through a function, such as a classifier function, thatidentifies the object. A person skilled in the relevant art given thisdescription would recognize that object recognition module 336 mayinclude additional subcomponents, including other recognition modules,configured to detect different types of objects.

In some embodiments, object recognition module 120 may use hidden Markovmodels to select and match particular objects to an object in a set ofknown objects. In the case where media data 104 is a video, objectrecognition module 120 may track an object across one or more frames andthen recognize the object based on the tracked frames.

By recognizing faces using face recognition module 332, landmarks usinglandmark recognition module 334, and objects using object recognitionmodule 336, media input module 330 determines media content data 306.Media content data 306 may include, for example, a collection of mediaand meta-information of faces, landmarks, and/or objects correspondingto the content of the collection of media. In addition to using thecontent of media data 120/301 to determine media content data 306, mediainput module 330 may extract metadata directly from media data 120/301using metadata extractor module 338, according to an embodiment.

3. Metadata Extraction

Metadata extractor module 338 may, for example, extract metadataincluded with media data 120/301. Media data 120/301 may be, forexample, a collection of media files, and each media file may includemetadata, as described above. In an embodiment, a media file may be aphotographic image file, such as a JPEG or TIFF. The photographic imagefile may include an EXIF header with data about the image. An EXIFheader may, for example, include data such as when the photo was taken.For example, client device 310 may include a location sensor, such as aGPS sensor. Image files generated by client device 310 may include alocation where each photo was taken in their EXIF headers. For example,the EXIF header may have latitude and longitude values corresponding towhere the picture was taken. In this way, metadata extractor module 338reads metadata from media data 120/301 to be included with media contentdata 306.

Embodiments of face recognition module 332, landmark recognition module334, object recognition module 336, and metadata extractor module 338can be implemented in software, firmware, hardware, or any combinationthereof. Embodiments of face recognition module 332, landmarkrecognition module 334, object recognition module 336, and metadataextractor module 338, or portions thereof, can also be implemented torun on any type of processing device including, but not limited to, acomputer, workstation, embedded system, networked device, mobile device,or other type of processor or computer system capable of carrying outthe functionality described herein.

4. Image Grouping

Using media content data 306, media sharing module 340 automaticallygroups the collection of media from different users and shares thegrouped media between the users based on the content of the media andthe associations between the users. For example, media input module 330may receive or acquire different images, perhaps whole albums of images,where each image and/or album is associated with a different user. Theusers themselves may be associated with each other, for example, asmembers of the same social network or social graph in which the usersare linked or associated with each other via sharing preferencesdesignated, for example, on a social networking site. In an example,each user may have member profile information stored at the socialnetworking site. In addition, each user's profile may have a sharingpreference that specifies the media sharing or access rights andprivileges the user provides to other users. The sharing preference maybe used to identify other users with whom the user chooses to sharemedia. For example, the sharing preference of a first user may identifya second user, where the first and second users are associated with eachother. In general, users associated with each other provide mediasharing privileges to one another, in which each user is allowed accessto images associated with the other user. Thus, users associated witheach other may identify one another via their sharing preferences. Aperson skilled in the relevant art given this description wouldrecognize any number of known methods for associating sharingpreferences with a user and for associating different users with eachother.

a. Album Segmentation

Media sharing module 340 automatically interprets media content data 306to group images associated with each individual user into one or morealbums for the user. Media sharing module 340 then automaticallyinterprets media content data 306 to group albums corresponding todifferent users into one or more event groups, where the event groupincludes media associated with the different users. Media sharing module340 then automatically shares, without user intervention, the eventgroup(s) between the different users based on their social graph orassociation with each other. In an embodiment, media sharing module 340also sends notifications of the available event group(s) to the users.

Media sharing module 340 includes an album segmentation module 342, anevent clustering module 344, a sharing manager 346, and a notificationmanager 348. In an embodiment, media sharing module 340 iscommunicatively coupled to each of album database 350, event database360, and social graph database 370 via communication lines 307, 308, and309 respectively.

Album segmentation module 342 segments the collection of media frommedia input module 330 by grouping the collection of media into one ormore albums based on the media content data information included inmedia content data 306. Album segmentation module 342 determines themedia content data corresponding to each image of the collection ofmedia using media content data 306. Based on the determined mediacontent data of each image, album segmentation module 342 segments thecollection of media into one or more albums.

For example, media content data 306 may include the time and location(e.g., in GPS coordinates) of when and where images of the collection ofmedia were captured. Based on the determined time and location of eachimage of the collection, album segmentation module 342 would segment thecollection or group of images into one or more albums in which eachalbum contains images having substantially similar time and locationinformation. To improve the accuracy of the segmentation operation andthe correlation of content between different images in a segmentedalbum, album segmentation module 342 segments the collection of mediabased on as much information it can derive from media content data 306.For example, album segmentation module 342 may use face recognitioninformation, landmark recognition information, object recognitioninformation, metadata, or any combination thereof to segment thecollection of images into an album(s).

In an embodiment, album segmentation module 342 may search albumdatabase 350 for existing albums containing images with similar mediacontent data as a particular image or group of images received frommedia input module 330. Using the previous example described above,album segmentation module 342 may find an existing album in albumdatabase 350 containing images having substantially similar time andlocation information as the image(s) from media input module 330. Inthis example, album segmentation module 342 would add the image(s) tothe existing album. If no existing album is found that matches thesearch criteria (e.g., images with similar media content data), albumsegmentation module 342 may create one or more new albums. In anembodiment, album segmentation module 342 may use album database 350 tostore the new album(s). Album segmenting module 342 associates eachalbum with the user associated with the group of images.

b. Event Clustering and Sharing

Event clustering module 344 clusters the albums, segmented by albumsegmenting module 342, by grouping the albums into one or more eventgroups based on the media content data information included in mediacontent data 306 and sharing preferences associated with two or moreusers. The clustering operation of event clustering module 344 issimilar to the segmenting operation of album segmenting module 342,except that even clustering module 344 groups albums, where differentalbums are associated with different users. As discussed above,different users may be associated with each other via sharingpreferences that identify one another. Also as discussed above, suchpreferences are used to determine which users have privileges to accessmedia associated with a particular user.

Event clustering module 344 uses sharing manager 346 to determinesharing preferences and associations between different users. In anembodiment, sharing manager 346 is communicatively coupled with socialgraph database 370. Social graph database 370 may store any type ofassociation between two or more users who have a social relationshipwith each other. Such association may include sharing preferences of theusers, where the sharing preferences specify access rights or privilegeseach user has with the other. Embodiments of sharing manager 346 andsocial graph database 370 may be integrated, for example, with one ormore social networking sites, photo sharing sites, or other similartypes of sites that enable associations or social connections betweendifferent users.

In an embodiment, sharing manager 346 retrieves stored associationsbetween two or more users, including the users' sharing preferences,from social graph database 370. The retrieved information regarding theusers in combination with media content data 306 is used by eventclustering module 344 to cluster albums into one or more event groups.Once the event group(s) is clustered by event clustering module 344,sharing manager 346 associates the event group(s) with the users andprovides the users with access to the event group(s) based on theassociation of the users with each other and each user's individualsharing preference. In an embodiment, event database 360 may be used tostore the association of users with event groups.

For example, a first album of images captured at a particular time andlocation, corresponding to a social event, may be associated with afirst user. A second album of images captured at the same time andlocation, i.e., event, may be associated with a second user. Inaddition, there may be other albums of images, also captured at theevent, associated with other users. In this example, even clusteringmodule 344 may use sharing manager 346 to determine which theassociations and sharing preferences of the users. If sharing manager346 identifies an association between the first and second users andeach user's sharing preference provides sharing privileges to the other,event clustering module 344 may, for example, cluster the first andsecond albums into an event group of images captured at the same timeand location. The event group in this example would contain imagesassociated with both users. Once the event group is created byclustering module 344, clustering module 344 may store the event groupin event database 360. Sharing manager 346 may then provide the firstand second users with access to the event group.

In an embodiment, notification manager 348 is configured toautomatically send notifications (e.g., notifications 130 of FIG. 1) toone or more users of the event group. In an embodiment, the notificationincludes an access link to the event group. For example, the access linkmay be web-based location address in the form of a uniform resourcelocator (URL) address, which users can select to be automaticallydirected to the event group. Referring back to FIG. 1, the images of theevent group may be accessible, for example, via client application 112,media viewer 118, or similar type of application the user can use toview media.

In an embodiment, event clustering module 344 may search event database360 for existing event groups to add a newly clustered event group basedon substantially similar content data. Event clustering module 344 mayadd the clustered event group to a matching event group if found inevent database 360. Alternatively, event clustering module 344 maycreate a new event group in event database 360 for the clustered eventgroup if a matching event group is not found in event database 360.

c. Real-Time Event Sharing

In an embodiment, sharing manager 346 may automatically enable real-timeaccess and sharing to an event group based on the content information ofmedia content data 306. For example, sharing manager 346 may use timeand location metadata determined from media content data 306 incombination with social graph information from social graph database 370to enable real-time access and sharing to an event group based on thetime, location, and social graph information.

To illustrate an example of real-time sharing via sharing manager 346,assume images of an event are captured by a first user and a second userduring the event. Event clustering module 344 may, for example,automatically generate an event group for the event based on the contentof media captured during the event by the first and second users. Mediacontent data 306 may include, for example, the time and location of whenand where the images were captured. In this example, sharing manager 346may determine that the first and second users are associated with eachother and have matching sharing preferences (e.g., the first user allowsmedia sharing privileges for the second user and vice versa). Based onthe time and location information, sharing manager 346 would determineboth users are at the same event and consequently, begin toautomatically associate the first and second users with the event groupand provide the users access to the event group. Notification manager348 may, for example, send notifications, including an access link tothe event group, to the first and second users. The first and secondusers may receive the notifications on, for example, their respectivemobile devices. The first and second users would then be able to viewthe images of the event group using, for example, their respectivemobile devices (e.g., in client application 112 or media viewer 118 ofFIG. 1). This enables the first and second users to automatically andefficiently share media between each other during the event.

Embodiments of album segmentation module 342, event clustering module344, sharing manager 346, and notification manager 348 can beimplemented in software, firmware, hardware, or any combination thereof.Embodiments of album segmentation module 342, event clustering module344, sharing manager 346, and notification manager 348, or portionsthereof, can also be implemented to run on any type of processing deviceincluding, but not limited to, a computer, workstation, embedded system,networked device, mobile device, or other type of processor or computersystem capable of carrying out the functionality described herein.

Album database 350, event database 360, and social graph database 370may be any type of data storage known to those of skill in the art. Inan example, the data storage may be a database management system, suchas an ORACLE database or other databases known to those skilled in theart. Album database 350 and event database 360 may store any type ofmedia such as images or video (e.g., organized into albums or eventgroups respectively) in addition to meta-information, including metadataand other content information, corresponding to the images or video.

Referring back to FIG. 1, although media sharing service 152 is shownwith respect to server(s) 150, it should be noted that embodiments ofmedia sharing service 152 and its components (media input module 330 andmedia sharing module 340), or portions thereof, can be implemented on asingle server, such as, for example, server 150, or across multipleservers, such as, for example, servers 150, 160, and 170, in adistributed or clustered server environment. Furthermore, subcomponentsof media input module 330 (face recognition module 332, landmarkrecognition module 334, object recognition module 336, and metadataextractor module 338), or portions thereof, can be implemented on asingle server or across multiple servers. Similarly, subcomponents ofmedia sharing module 340 (album segmentation module 342, eventclustering module 344, sharing manager 346, and notification manager348), or portions thereof, can be implemented on a single server oracross multiple servers.

III. METHOD

A. Automatic Media Sharing Between Users

FIGS. 4A and 4B are process flowcharts of a method 400 for automaticallysharing media between users. Method 400 includes steps 402, 404, 406,408, 410, 412, 414, 416, 418, 420, 422, 424, and 426. Benefits of method400 include, but are not limited to, a faster, more efficient, andautomated way for users to share media between one another. Moreover,method 400 alleviates the burden for users of having to manually groupimages into albums, add descriptors to the album (e.g., album titles),and share the albums with other users.

For ease of explanation, system 100 of FIG. 1 and system 300 of FIG. 3,as described above, will be used to describe method 400, but is notintended to be limited thereto. Referring back to FIG. 3, method 400 maybe performed, for example, by server(s) 150 via media sharing service152. Method 400 begins in step 402 of FIG. 4A and proceeds to step 404,which includes receiving a first collection of images associated with afirst user. Step 404 may be performed, for example, by media inputmodule 330. In an embodiment, the first collection of images may bereceived directly from the first user via the first user's clientdevice, such as, for example, client device 110. In another embodiment,the first collection may be stored for later retrieval in one or moremedia databases, such as, for example, media database 320. For example,the first collection of images may have been previously uploaded by thefirst user via, for example, a photo sharing site to which mediadatabase 320 may be coupled, as described above. Also, as describedabove, the images of the first collection may be digital photos, framesfrom a digital video, or any combination thereof.

Method 400 proceeds to step 406, which includes determining a firstcontent data for each image in the first collection. Step 406 may beperformed, for example, by face recognition module 332, landmarkrecognition module 334, object recognition module 336, media extractormodule 338, or any combination thereof. As described above, the firstcontent data may include information comprising recognized faces,landmarks, and/or objects within the first collection of images. Also asdescribed above, the first content data may additionally includemetadata extracted from the first collection including, but not limitedto, the time and location of when and where the images were captured.

Method 400 then proceeds to step 408, which includes segmenting thefirst collection into a first set of one or more albums. Step 408 may beperformed, for example, by album segmentation module 342 of mediasharing module 340. As described above, the first collection issegmented based on the determined first content data in step 406.

Steps 410, 412, and 414 of method 400 are similar to above-describedsteps 404, 406, and 408, respectively. However, steps 410, 412, and 414correspond to a second collection of images associated with a seconduser. Thus, in step 410, a second collection of images associated withthe second user is received. Like the first collection of images in step404, the second collection may be received directly from second user oraccessed from a media database, such as, for example, media database320. Step 410 may also be performed, for example by media input module330. In step 412, a second content data for each image in the secondcollection is determined. Step 412 may be performed, for example, byface recognition module 332, landmark recognition module 334, objectrecognition module 336, media extractor module 338, or any combinationthereof. In step 414, the second collection is segmented into a secondset of one or more albums based on the second content data. Step 414 maybe performed, for example, by album segmentation module 342.

In an embodiment, the first and second sets of one or more albums areassociated with the first and second users, respectively. As describedabove, the first and second users may also be associated with eachother. In addition, the first and second users may have first and secondsharing preferences, respectively. The sharing preference of each useridentifies the media sharing rights and privileges the user provides tothe other user. For example, the first user may have a sharingpreference that allows sharing media with the second user by providingthe second user access rights to media associated with the first user.The second user may also have a similar sharing preference correspondingto the first user.

Once the first and second collections are segmented into respectivefirst and second sets of one or more albums, method 400 proceeds to step416. In step 416, the first and second sets are clustered into an eventgroup according to the first and second content data and sharingpreferences of the first and second users. Step 416 may be performed,for example, by event clustering module 344 in combination with sharingmanager 346.

After the event group is created in step 416, method 400 proceeds tostep 418, which includes providing the first and second users withaccess to the event group. Although not shown in method 400, the firstand second users may also be associated with the event group, accordingto an embodiment. In addition, the event group and any associations withfirst and second users may be stored, for example, by event clusteringmodule 344 in event database 360 via communication line 308, asillustrated in FIG. 3. Step 418 may be performed, for example, bysharing manager 346. In an embodiment, method 400 may also include anadditional step (not shown), which includes sending a notification ofthe event group to the first and second users. The notification mayinclude an access link to the event group, as described above. Thisoptional step may be performed, for example, by notification manager348.

Next, method 400 proceeds to step 420 of FIG. 4B, which includesreceiving one or more new images representing scenes from a particularevent, to which the event group corresponds. For example, the eventgroup created in step 416 may include images that were captured by thefirst and second users during a particular event. After the event groupis created, the first and/or second users may send new images alsocaptured from the event. The new images may be sent by the first and/orsecond users from, for example, their mobile devices during the event ormay be uploaded to, for example, a media sharing site after the event.In the former scenario, step 420 includes receiving the new imagesdirectly from one or both of the users. However, in the latter scenario,step 420 includes accessing the uploaded images from a media databasecoupled to or integrated with the media sharing site. The media databasemay be, for example, media database 320 of FIG. 3.

In a further scenario, a first set of new images from the event may bereceived directly from the first user and a second set of new imagesfrom the event may have been uploaded by the second user to a mediasharing site. In this scenario, step 420 includes receiving new imagesdirectly and accessing new images from the media database. It should benoted that either user may choose to send images directly or uploadimages to a media sharing site. Step 420 may be performed, for example,by media input module 330 of FIG. 3.

If new images are received or accessed, method 400 proceeds to step 422,which includes updating the event group with the received or accessednew images, and to step 424, which includes providing the first andsecond users access to the updated event group. Providing the first andsecond users access to the updated event group enables sharing the eventgroup between the first and second users. It should be noted that bothfirst and second users are provided access to the event group regardlessof whether the new images themselves were originally sent or uploaded byonly one of the users. Step 422 may be performed, for example, by eventclustering module 344. Step 424 may be performed, for example, bysharing manager 346. In an embodiment, method 400 may include anadditional step (not shown) of sending the first and second users anotification of the updated event group. This step may be performed, forexample, by notification manager 348. If no new images are received oraccessed, method 400 concludes at step 426.

In an embodiment, steps 420, 422 and 424 enable automatic media sharingbetween the first and second users via the click of a shutter. Forexample, the new image(s) received in step 420 may be from a user, whocaptured the image using an application (e.g., client application 112)executing on a computing device with an integrated digital camera (e.g.,client device 110 of FIG. 3) or a standalone image capturing device,such as, for example, a digital camera with an EYE-FI card (e.g., clientdevice 310 of FIG. 3). Once the image(s) is received, the event group isautomatically updated, without user intervention, with new image(s) instep 422, and the updated event group is automatically shared, withoutuser intervention, between the users in step 424.

One advantage of method 400 is that it enables automatic sharing ofmedia between users (in step 424) without requiring users to manuallylabel and group images and collections of images. This leads to afaster, easier, and more efficient user experience for sharing media,which benefits the user who captures the media by making it easier toshare media. Furthermore, other users associated with the user are alsobenefited as it increases the likelihood that media captured by the userwill be shared.

B. Client Application

FIG. 5 is a flowchart of an embodiment of an exemplary method 500 forsending media using a client application. For ease of explanation clientapplication 112 of FIG. 2 and system 300 of FIG. 3 will be used tofacilitate the description of method 500. Further, for ease ofexplanation, method 500 will be described in the context of a mobiledevice (e.g., client device 110 of FIG. 1) with an integrated imagecapturing device, such as, for example, a digital camera. However, basedon the description herein, a person of ordinary skill in the relevantart will recognize that method 500 can be integrated within other clientapplications that can be executed on any type of computing device havinga camera or other image capturing device.

Method 500 includes steps 502, 504, 506, 508, 510, 512, 514, and 516.Method 500 begins in step 502 and proceeds to step 504, which involvescapturing an image representing a scene with one or persons. The imagemay be a digital photograph or one or more video frames of a digitalvideo. Step 504 may be performed, for example, by image capture module210 (e.g., when a user clicks a shutter). In addition to images capturedby image capture module 210, method 500 can also use images alreadycaptured and stored in local memory (e.g., local memory 116 of clientdevice 110). In step 506, the face of each person in the image isdetected as described above. Step 506 may be performed by face detectionmodule 220, described above. Method 500 then proceeds to step 508, whichincludes obtaining identification information for the face(s) detected.

In one embodiment, obtaining identification information in step 508includes enabling a user to identify the face(s) detected in the image.The user may identify the face(s) by entering identification informationfor the person corresponding to the face. Such identificationinformation may include, but is not limited to, a name and/or contactinformation (e.g., an email address) of the person being identified. Forexample, the captured image may be displayed on a display coupled to thecomputing device (e.g., client device 110 of FIG. 1) executing theclient application (e.g., client application 112). In addition, thedetected face(s) in the image may be shown on the display with a virtualbox drawn around the face to demarcate the face(s). The user may enterthe name and contact information using a user input device, such as, forexample, a touch screen or keyboard (e.g., device input 114). Thisembodiment of step 508 may be performed, for example, by user interfacemodule 240, described above.

In another embodiment, obtaining identification information in step 508includes retrieving a stored facial image that matches each detectedface from, for example, local memory (e.g., in local memory 116)accessible by client application 112, as described above. In anotherexample, the stored facial image may be retrieved in step 508 from aremote location such as a facial image database (not shown), which canbe accessible, for example, by client application 112 over network 140.The stored facial image can also include metadata of its own, includingidentification information for the identity of the person correspondingto the facial image. For example, the identification information mayinclude a name and contact information. Thus, in this embodiment, step508 would no longer require the user to provide the identificationinformation for the detected face. The advantage of this embodiment isallowing method 500 to proceed without further user intervention. Thisembodiment of step 508 may be performed, for example, by face detectionmodule 220 in combination with a face recognition module, such as, forexample, face recognition module 332 of media sharing service 152,described above.

Once the detected faces have been identified, method 500 proceeds tostep 510, which involves associating detected face information andidentification information (e.g., name and contact information) with theimage. Such information may be associated with the image as metadata. Inoptional step 512, additional metadata may be associated with the imageincluding, but not limited to, a time when the image was captured and alocation where the image was captured. For example, the locationinformation may only be available if the device executing the clientapplication includes a GPS receiver. Steps 510 and 512 may be performed,for example, by metadata insertion module 230.

After the metadata information is associated with the captured image,method 500 proceeds to step 514, which involves sending the image,including the metadata information, to a media sharing service, such as,for example, media sharing service 152 of FIGS. 1 and 3. The sent imagemay be received, for example, by media input module 330 of media sharingservice 152, shown in FIG. 3. Step 514 may be performed, for example, byimage transfer module 250. Method 500 concludes in step 516 once theimage has been sent.

One advantage of method 500, particularly in combination with method400, is that it enables users to automatically share media in a fast andeasy way with minimal steps. Media can be shared by a user simply byclicking a shutter (in step 504).

C. Album Segmentation

FIG. 6 is a flowchart of an embodiment of an exemplary method 600 forgrouping images into albums. Method 600 includes steps 602, 604, 606,608, 610, 612, 614, and 616. Method 600 starts in step 602 and proceedsto step 604, which includes receiving an image associated with a user.Step 604 may be performed, for example, by media input module 330 ofFIG. 3. Upon receipt of the image, method 600 proceeds to step 606,which includes determining content data for the image. The image contentdata may include, but is not limited to, face recognition information,landmark recognition information, metadata information (e.g., time andlocation information), and any other types of image content information.Step 606 may be performed, for example, by the subcomponents of mediainput module 330, including face recognition module 332, landmarkrecognition module 334, object recognition module 336, metadataextractor module 338, or any combination thereof.

Method 600 proceeds to step 608, which includes searching the user'sexisting albums, if any, for a matching album based on the image contentdata. An existing album may be considered to be a match if the existingalbum contains images with substantially similar content data as thereceived image. A person skilled in the relevant art given thisdescription would appreciate that any one of a number approaches forsearching may be used to efficiently search for a matching album. Anexample of one such approach includes creating a local index, in adatabase used to store user albums (e.g., album database 350 of FIG. 3),corresponding to one of the dimensions of the image content data. Forexample, an index corresponding to the album's end timestamp may becreated. Such a timestamp index can be used to scan the range from theimage timestamp (i.e., the time when the image was captured), minus somepredetermined threshold value, to the end of a table in a database. Thecandidate albums produced from the scan could then be filtered by theremaining dimensions of the image content data, such as, for example,location information. The advantage of this example approach is reducingthe number of albums to search.

If a matching album is found in step 608, method 600 proceeds to step610, in which the image is added to the matching album. Alternatively,if a matching album is not found in step 608, method 600 proceeds tostep 612, in which a new album is created for the image. Steps 608, 610,612, and 614 may be performed, for example, by album segmentation module342 of media sharing module 340, shown in FIG. 3. After steps 610 or612, method 600 concludes at step 614.

D. Event Clustering

FIG. 7 is a flowchart of an embodiment of an exemplary method 600 forgrouping albums associated with two or more users into event groups.Method 700 includes steps 702, 704, 706, 708, 710, 712, 714, and 716.Method 700 starts in step 702 and proceeds to step 704, which includesreceiving two or more albums, where each album is associated with adifferent user. Step 704 may be performed, for example, by media inputmodule 330 of FIG. 3. Upon receipt of the albums, method 700 proceeds tostep 706, which includes determining album content data for each album.The album content data includes content information corresponding to theimages within a given album. Such album content data may include, but isnot limited to, face recognition information, landmark recognitioninformation, metadata information (e.g., time and location information),and any other types of album content information. Step 706 may beperformed, for example, by the subcomponents of media input module 330,including face recognition module 332, landmark recognition module 334,object recognition module 336, metadata extractor module 338, or anycombination thereof.

Method 700 proceeds to step 708, which includes searching existing eventgroups, if any, associated with the user for a matching album based onthe album content data. Like method 600, an existing event group may beconsidered a match for the album if the existing event group containsalbums with substantially similar content data as the received albums.Also like method 600, a person skilled in the relevant art given thisdescription would appreciate that method 700 may utilize any one of anumber approaches for searching may be used to efficiently search for amatching event group. For example, like the example in method 600, oneapproach for method 700 includes creating a local index, in a databaseused to store event groups (e.g., event database 360 of FIG. 3).

If a matching event group is found in step 708, method 700 proceeds tostep 710, in which the albums are added to the matching event group.Alternatively, if a matching event group is not found in step 708,method 700 proceeds to step 712, in which a new event group is createdfor the albums. Steps 708, 710, 712, and 714 may be performed, forexample, by event clustering module 344 of media sharing module 340,shown in FIG. 3. After steps 710 or 712, method 700 concludes at step714.

In an embodiment, method 700 may also include one or more additionalsteps (not shown), which involve querying a user for a suggested eventgroup. In this embodiment, method 700 may suggest one or more eventgroups, for example, by displaying a list of event groups, in which toinclude the user's one or more albums. The list may be displayed, forexample, at a media sharing site accessed by the user. Once the userselects an event group, method 700 may proceed to inserting the one ormore albums associated with the user into the user-selected event group.The additional steps involving querying the user and receiving theuser's selection may be performed, for example, by sharing manager 346of FIG. 3. The steps involving adding the albums to the selected eventgroup may be performed, for example, by event clustering module 344.

IV. EXAMPLE COMPUTER SYSTEM IMPLEMENTATION

Aspects of the present disclosure shown in FIGS. 1-7, or any part(s) orfunction(s) thereof, may be implemented using hardware, softwaremodules, firmware, tangible computer readable media having instructionsstored thereon, or a combination thereof and may be implemented in oneor more computer systems or other processing systems.

FIG. 8 illustrates an example computer system 800 in which embodimentsof the present disclosure, or portions thereof, may by implemented ascomputer-readable code. For example, system 300 of FIG. 3, can beimplemented in computer system 800 using hardware, software, firmware,tangible computer readable media having instructions stored thereon, ora combination thereof and may be implemented in one or more computersystems or other processing systems. Hardware, software, or anycombination of such may embody any of the modules and components inFIGS. 1-7.

If programmable logic is used, such logic may execute on a commerciallyavailable processing platform or a special purpose device. One ofordinary skill in the art may appreciate that embodiments of thedisclosed subject matter can be practiced with various computer systemconfigurations, including multi-core multiprocessor systems,minicomputers, mainframe computers, computers linked or clustered withdistributed functions, as well as pervasive or miniature computers thatmay be embedded into virtually any device.

For instance, at least one processor device and a memory may be used toimplement the above described embodiments. A processor device may be asingle processor, a plurality of processors, or combinations thereof.Processor devices may have one or more processor “cores.”

Various embodiments of the disclosure are described in terms of thisexample computer system 800. After reading this description, it willbecome apparent to a person skilled in the relevant art how to implementembodiments of the present disclosure using other computer systemsand/or computer architectures. Although operations may be described as asequential process, some of the operations may in fact be performed inparallel, concurrently, and/or in a distributed environment, and withprogram code stored locally or remotely for access by single ormulti-processor machines. In addition, in some embodiments the order ofoperations may be rearranged without departing from the spirit of thedisclosed subject matter.

Processor device 804 may be a special purpose or a general purposeprocessor device. As will be appreciated by persons skilled in therelevant art, processor device 804 may also be a single processor in amulti-core/multiprocessor system, such system operating alone, or in acluster of computing devices operating in a cluster or server farm.Processor device 804 is connected to a communication infrastructure 806,for example, a bus, message queue, network, or multi-coremessage-passing scheme.

Computer system 800 also includes a main memory 808, for example, randomaccess memory (RAM), and may also include a secondary memory 810.Secondary memory 810 may include, for example, a hard disk drive 812,removable storage drive 814. Removable storage drive 814 may comprise afloppy disk drive, a magnetic tape drive, an optical disk drive, a flashmemory, or the like. The removable storage drive 814 reads from and/orwrites to a removable storage unit 818 in a well known manner. Removablestorage unit 818 may comprise a floppy disk, magnetic tape, opticaldisk, etc. which is read by and written to by removable storage drive814. As will be appreciated by persons skilled in the relevant art,removable storage unit 818 includes a computer usable storage mediumhaving stored therein computer software and/or data.

In alternative implementations, secondary memory 810 may include othersimilar means for allowing computer programs or other instructions to beloaded into computer system 800. Such means may include, for example, aremovable storage unit 822 and an interface 820. Examples of such meansmay include a program cartridge and cartridge interface (such as thatfound in video game devices), a removable memory chip (such as an EPROM,or PROM) and associated socket, and other removable storage units 822and interfaces 820 which allow software and data to be transferred fromthe removable storage unit 822 to computer system 800.

Computer system 800 may also include a communications interface 824.Communications interface 824 allows software and data to be transferredbetween computer system 800 and external devices. Communicationsinterface 824 may include a modem, a network interface (such as anEthernet card), a communications port, a PCMCIA slot and card, or thelike. Software and data transferred via communications interface 824 maybe in the form of signals, which may be electronic, electromagnetic,optical, or other signals capable of being received by communicationsinterface 824. These signals may be provided to communications interface824 via a communications path 826. Communications path 826 carriessignals and may be implemented using wire or cable, fiber optics, aphone line, a cellular phone link, an RF link or other communicationschannels.

In this document, the terms “computer program medium” and “computerusable medium” are used to generally refer to media such as removablestorage unit 818, removable storage unit 822, and a hard disk installedin hard disk drive 812. Computer program medium and computer usablemedium may also refer to memories, such as main memory 808 and secondarymemory 810, which may be memory semiconductors (e.g. DRAMs, etc.).

Computer programs (also called computer control logic) are stored inmain memory 808 and/or secondary memory 810. Computer programs may alsobe received via communications interface 824. Such computer programs,when executed, enable computer system 800 to implement the presentdisclosure as discussed herein. In particular, the computer programs,when executed, enable processor device 804 to implement the processes ofthe present disclosure, such as the stages in the methods illustrated byflowcharts 400, 600, and 700 of FIGS. 4A-B, 6, and 7, respectively,discussed above. Accordingly, such computer programs representcontrollers of the computer system 800. Where an embodiment of thepresent disclosure is implemented using software, the software may bestored in a computer program product and loaded into computer system 800using removable storage drive 814, interface 820, hard disk drive 812,or communications interface 824.

Embodiments of the disclosure also may be directed to computer programproducts comprising software stored on any computer useable medium. Suchsoftware, when executed in one or more data processing device, causes adata processing device(s) to operate as described herein. Embodiments ofthe disclosure employ any computer useable or readable medium. Examplesof computer useable mediums include, but are not limited to, primarystorage devices (e.g., any type of random access memory), secondarystorage devices (e.g., hard drives, floppy disks, CD ROMS, ZIP disks,tapes, magnetic storage devices, and optical storage devices, MEMS,nanotechnological storage device, etc.), and communication mediums(e.g., wired and wireless communications networks, local area networks,wide area networks, intranets, etc.).

V. CONCLUSION

It is to be appreciated that the Detailed Description section, and notthe Summary and Abstract sections, is intended to be used to interpretthe claims. The Summary and Abstract sections may set forth one or morebut not all exemplary embodiments of the present disclosure ascontemplated by the inventor(s), and thus, are not intended to limit thepresent disclosure and the appended claims in any way.

The present disclosure has been described above with the aid offunctional building blocks illustrating the implementation of specifiedfunctions and relationships thereof. The boundaries of these functionalbuilding blocks have been arbitrarily defined herein for the convenienceof the description. Alternate boundaries can be defined so long as thespecified functions and relationships thereof are appropriatelyperformed.

The foregoing description of the specific embodiments will so fullyreveal the general nature of the disclosure that others can, by applyingknowledge within the skill of the art, readily modify and/or adapt forvarious applications such specific embodiments, without undueexperimentation, without departing from the general concept of thepresent disclosure. Therefore, such adaptations and modifications areintended to be within the meaning and range of equivalents of thedisclosed embodiments, based on the teaching and guidance presentedherein. It is to be understood that the phraseology or terminologyherein is for the purpose of description and not of limitation, suchthat the terminology or phraseology of the present specification is tobe interpreted by the skilled artisan in light of the teachings andguidance.

The breadth and scope of the present disclosure should not be limited byany of the above-described exemplary embodiments, but should be definedonly in accordance with the following claims and their equivalents.

1-20. (canceled)
 21. A method comprising: obtaining first and secondsets of one or more albums associated with first and second users,respectively, wherein the first and second sets of albums include one ormore albums having one or more images with content data similar to eachother within the individual albums; clustering the first and second setsof albums into an event group based on similarity between the contentdata of the images of the first and second sets of albums; and providingthe first and second users access to the event group based on thecontent data of the images of the first and second albums.
 22. Themethod of claim 21 wherein the providing the first and second usersaccess to the event group is also based on first and second sharingpreferences associated with the first and second users, respectively.23. The method of claim 21 wherein the content data of the images of thefirst and second albums includes at least one of: time informationrelating to a capture of the images of the first and second sets ofalbums; and location information relating to a capture of the images ofthe first and second sets of albums.
 24. The method of claim 21 whereinthe content data of the images of the first and second albums includesat least one of: face recognition information, landmark recognitioninformation, and object recognition information.
 25. The method of claim21 wherein the clustering the first and second sets of albums into theevent group is based also on first and second sharing preferencesassociated with the first and second users, respectively, wherein thefirst and second sharing preferences include an association used toassociate the first and second users.
 26. The method of claim 25 whereinthe association includes a social relationship obtained from a socialgraph database integrated with a networking site.
 27. The method ofclaim 21 wherein providing the first and second users access to theevent group includes determining which users have privileges to accessthe images of the first and second sets of albums.
 28. The method ofclaim 21 further comprising querying a user for a suggested event group.29. The method of claim 21 further comprising: determining anddisplaying one or more suggested event groups to the user; and receivinga selection of one of the suggested event groups by the user.
 30. Themethod of claim 21 wherein obtaining the albums includes: segmenting afirst collection of one or more images associated with the first userinto the first set of albums according to first content data of thefirst collection; and segmenting a second collection of one or moreimages associated with the second user into the second set of albumsaccording to second content data of the second collection.
 31. Themethod of claim 21, further comprising: receiving one or more additionalimages associated with the first user or the second user; and updatingthe event group to include one or more additional images associated withat least one of the first and second users, and the first and secondusers are automatically provided access to the updated event group. 32.The method of claim 21, further comprising providing a third user,associated with at least one of the first and second users, access tothe event group, in response to determining at least one of the contentdata includes an identity of a face corresponding to the third user. 33.A system comprising: a storage device; and at least one processoraccessing the storage device and operative to perform operationscomprising: obtaining first and second sets of one or more albumsassociated with first and second users, respectively, wherein the firstand second sets of albums include one or more albums having one or moreimages with content data similar to each other within the individualalbums; clustering the first and second sets of albums into an eventgroup based on similarity between the content data of the images of thefirst and second sets of albums; and providing the first and secondusers access to the event group based on the content data of the imagesof the first and second albums.
 34. The system of claim 33 wherein theproviding the first and second users access to the event group is alsobased on first and second sharing preferences associated with the firstand second users, respectively.
 35. The system of claim 33 wherein thecontent data of the images of the first and second albums includes atleast one of: time information relating to a capture of the images ofthe first and second sets of albums; and location information relatingto the capture of the images of the first and second sets of albums. 36.The system of claim 33 wherein the content data of the images of thefirst and second albums includes at least one of: face recognitioninformation, landmark recognition information, and object recognitioninformation.
 37. The system of claim 33 wherein the operation ofclustering the first and second sets of albums into the event group isbased also on first and second sharing preferences associated with thefirst and second users, respectively, wherein the first and secondsharing preferences include an association used to associate the firstand second users.
 38. The system of claim 37 wherein the associationincludes a social relationship obtained from a social graph databaseintegrated with a networking site.
 39. The system of claim 33 whereinthe operation of providing the first and second users access to theevent group includes determining which users have privileges to accessthe images of the first and second sets of albums.
 40. The system ofclaim 33 wherein the operation of obtaining the albums includes:segmenting a first collection of one or more images associated with thefirst user into the first set of albums according to first content dataof the first collection; and segmenting a second collection of one ormore images associated with the second user into the second set ofalbums according to second content data of the second collection.